/**
 * Created by YS on 2017/12/25.
 * 应用程序的启动入口文件
 */
// 用户发送http请求=> url => 解析路径 => 找到匹配的规则 => 执行指定的绑定函数，返回对应内容至用户
// /public => 静态 => 直接读取指定目录下的文件，返回给用户 => 动态 => 处理业务逻辑，加载模板，解析模板 => 返回数据给用户

var express = require('express')        // 加载 express 模块
var swig = require('swig')              // 加载模板处理模块
var app = express()                     // 创建qpp应用 => nodejs http.createServer()   等同于服务端对象

//*********************************************************************************************************静态文件的处理
// 设置静态文件托管：当用户访问的请求的 url 是以 '/public' 开头，则直接返回对应的__dirname + '/public'下的文件
app.use('/public', express.static(__dirname + '/public'))
//***********************************************************************************************************静态文件处理


// **********************************************************************************************************动态文件处理
// 配置应用模板*****************************************************************
    // 1：定义当前应用使用的模板引擎
        // 第一个参数：模板引擎的名称，同时也是文件的后缀名---html
        // 第二个参数：用于解析处理模板内容的方法------swig.renderFile
app.engine('html', swig.renderFile)

    // 2：设置模板文件存放的目录，第一个参数必须是 'views' ，第二个参数是目录
app.set('views', './views')
    // 3：注册所使用的的模板引擎，第一个参数必须是 'view engine' ，第二个参数和aap.engine中定义的模板引擎名称（参数1---html）相同
app.set('view engine', 'html')

// 为了性能，模板加载一次页面后，会产生缓存，后面重新加载都是假在缓存，即：服务器不重启的情况下，修改了页面，但还是现实修改之前的
// 再开发过程中需要取消模板缓存的限制
swig.setDefaults({cache:false})
//******************************************************************************


/*
* 首页
* req：request对象------客户端的请求
* res：response对象------服务端的输出
* next：函数
* res.send(string)：发送内容至客户端
* */
app.get('/', function (req, res, next) {
    res.send('<hi>这是首页8081</hi>')        // 默认发送的是 html

    // 加载 html 页面
    /*读取views目录下的指定文件，解析兵返回给客户端
    *       第一个参数：表示模板的文件，相对于 views 目录---views/***.html
    *       第二个参数：传递给模板使用的数据*/
    // res.render('index');
});


// // 加载 css 样式 ??????????????????????????????
// app.get('/main.css', function (req, res, next) {
//     res.setHeader('content-type', 'text/css');
//     res.send('h1 {color: red;}');
// })
// **********************************************************************************************************动态文件处理



// 监听 http 请求
app.listen(8081, function(){
    console.log('8081 链接成功')
})





















